package com.yilin.tms.order.service.payment;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yilin.tms.core.application.PageData;
import com.yilin.tms.core.entity.capital.TradeRecord;
import com.yilin.tms.core.entity.order.clearing.ClearingDetail;
import com.yilin.tms.core.entity.order.goods.GoodsOrder;
import com.yilin.tms.core.entity.order.payment.OrderPaymentCost;
import com.yilin.tms.core.entity.order.rob.RobOrder;
import com.yilin.tms.core.entity.order.transit.TransitOrder;
import com.yilin.tms.core.entity.user.account.Account;

import java.util.List;

public interface IOrderPaymentCostService extends IService<OrderPaymentCost> {

    void updateOrderPaymentResult(TradeRecord tradeRecord, Account loginUser);

    void cancelOrderPayment(String id, Account loginUser);

    OrderPaymentCost generateGoodsOrderPayment(GoodsOrder goodsOrder);

    OrderPaymentCost generateRobOrderPayment(RobOrder robOrder, GoodsOrder goodsOrder);

    OrderPaymentCost generateDeliveryOrderPayment(TransitOrder transitOrder, RobOrder robOrder);

    OrderPaymentCost generateReceiptOrderPayment(TransitOrder transitOrder);

    OrderPaymentCost generateClearingOrderPayment(TransitOrder transitOrder, ClearingDetail clearingDetail);

    OrderPaymentCost getOrderPaymentByGoodsOrderId(String goodsOrderId);

    List<OrderPaymentCost> getOrderPaymentByGoodsOrderIds(List<String> goodsOrderIds);

    OrderPaymentCost getOrderPaymentByRobOrderId(String robOrderId);

    List<OrderPaymentCost> getOrderPaymentByRobOrderIds(List<String> robOrderIds);

    OrderPaymentCost getOrderPaymentByTransitOrderId(String transitOrderId, OrderPaymentCost.PaySite paySite);

    List<OrderPaymentCost> getOrderPaymentByTransitOrderIds(List<String> transitOrderIds, OrderPaymentCost.PaySite paySite);

    List<OrderPaymentCost> getOrderPaymentListByTransitOrderId(String transitOrderId);

    PageData<OrderPaymentCost> getOrderPaymentPage(OrderPaymentCost query, Account loginUser, Integer page, Integer limit);

    List<OrderPaymentCost> getOrderPaymentListByIds(List<String> paymentOrderIds);

    OrderPaymentCost getOrderPaymentById(String paymentOrderId);



}
